package utils;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileUploadUtils {
	
	public static File MakeDir(String savePath) {
		File file_dir = new File(savePath);
		if (!file_dir.exists()) {
			file_dir.mkdir();
		}
		return file_dir;
	}
	
	/**
	 * 说明：以时间年月日时分秒毫秒的格式生成新的文件名
	 * @param original_name 文件名的原始名称
	 * @return
	 */
	public static String MakeNewFileName(String original_name) {
		Date date = new Date();
		String fileExtName = original_name.substring(original_name.lastIndexOf("."));
		SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHmmssSSS");
		return sdf.format(date)+fileExtName;
	}
	
	/**
	 * 说明：文件保存目录打散 (保存在一个目录，当文件过多会影响性能)
	 * @param original_name 文件名的原始名称
	 * @param savePath 文件要保存的路径 (如：文件保存的路径为"public/upload",则文件最终会保存在upload下面的子目录中)
	 * @return 打散后的目录 (为两层，每层0-15个文件夹)
	 */
	public static String MakePath(String original_name, String savePath) {
		// 得到文件名的hashCode的值，得到的就是filename这个字符串对象在内存中的地址
		int hashcode = original_name.hashCode();
		int dir1 = hashcode & 0xf; 			// 0--15
		int dir2 = (hashcode & 0xf0) >> 4; 	// 0-15
		// 构造新的保存目录
		String dir = savePath + "\\" + dir1 + "\\" + dir2; // upload\2\3
		// File既可以代表文件也可以代表目录
		File file = new File(dir);
		if (!file.exists()) {
			file.mkdirs();
		}
		return dir;
	}
	
	
	
	

}
